home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 8
/
FM Towns Free Software Collection 8.iso
/
fb386
/
hiroki
/
hiroki.bas
next >
Wrap
BASIC Source File
|
1994-06-01
|
6KB
|
215 lines
10 SCREEN@ 0:CLS:CLEAR
20 '
30 '=========================タイトル表示===============================
40 '
50 SYMBOL(100,100),"石取りゲーム",5,5,%9
60 SYMBOL(365,450),"よろしいですか? YES NO",1,1,0
70 SYMBOL(225,322),"----- GAMEPLAY -----",1,1,7
80 SYMBOL(225,360),"------- 終了 -------",1,1,7
90 MOUSE 0:MOUSE 1,320,240,1:MOUSE 3,0,3:MOUSE 3,1,3
100 WHILE MOUSE(2,0)<>-1:WEND
110 TS=0:IF MOUSE(2,0)=-1 THEN 120 ELSE 100
120 MA=MOUSE(1)
130 IF MA>318 AND MA<343 THEN TS=1:GOTO 150
140 IF MA>356 AND MA<381 THEN 160 ELSE 110
150 SYMBOL(225,322),"----- GAMEPLAY -----",1,1,%11:TA=2:GOTO 170
160 SYMBOL(225,360),"------- 終了 -------",1,1,%11:TA=3:GOTO 170
170 WAIT 20:MOUSE 4,500,435,605,465
180 SYMBOL(365,450),"よろしいですか? YES NO",1,1,7
190 WHILE MOUSE(2,0)<>-1 :WEND
200 MB=MOUSE(0)
210 IF MB>500 AND MB<550 THEN 230
220 IF MB>555 AND MB<605 THEN 60 ELSE 190
230 IF TS=1 THEN 310 ELSE 240
240 END
250 '
260 '=======================メインプログラム=============================
270 '
280 '
290 '---------------------------盤を書く---------------------------------
300 '
310 WAIT 20:CLS:SCREEN@ 0
320 LINE(161,1)-(638,478),PSET,0,BF
330 LINE(160,0)-(639,479),PSET,4,B
340 FOR BA=1 TO 8
350 LINE(BA*60+160,0)-(BA*60+160,479),PSET,4
360 NEXT BA
370 FOR BB=1 TO 8
380 LINE(160,BB*60)-(639,BB*60),PSET,4
390 NEXT BB
400 SYMBOL(0,0),"石取り",3.5!,4,1
410 IF T=0 THEN GOSUB *一回戦
420 IF T=1 THEN GOSUB *二回戦
430 LOCATE ,19:PRINT" 赤 個"
440 LOCATE ,21:PRINT" 青 個"
450 LOCATE ,23:PRINT" 右クリック=終了"
460 '
470 '----------------------盤の状態を初期化する--------------------------
480 '
490 DEFINT A-Z:DIM BD%(9,9)
500 FOR A=1 TO 8
510 FOR B=1 TO 8
520 BD(A,B)=0
530 NEXT B
540 NEXT A
550 FOR A=0 TO 9
560 FOR B=0 TO 9 STEP 9
570 BD(A,B)=-1
580 BD(B,A)=-1
590 NEXT B
600 NEXT A
610 D=1
620 FOR C=0 TO 7
630 RANDOMIZE TIME
640 SC=INT(RND*8)+1:SD=INT(RND*8)+1
650 IF BD(SC,SD)<>0 THEN 640
660 BD(SC,SD)=D
670 IF D=1 THEN D=2 ELSE D=1
680 NEXT C
690 '
700 '---------------------マウスカーソルの準備---------------------------
710 '
720 MOUSE 0
730 MOUSE 1,320,240,1 :MOUSE 3,0,3:MOUSE 3,1,3
740 MOUSE 4,160,0,639,479
750 '
760 '--------------------------変数の用意--------------------------------
770 '
780 IF T=2 THEN TA=1 ELSE TA=2
790 UU=0
800 '
810 '-------------------盤の現在の状態を表示する-------------------------
820 '
830 WW=0:RR=0
840 FOR A=1 TO 8
850 FOR B=1 TO 8
860 IF BD(A,B)=1 THEN CIRCLE(190+(A-1)*60,30+(B-1)*60),25,%2,,,,F:WW=WW+1
870 IF BD(A,B)=2 THEN CIRCLE(190+(A-1)*60,30+(B-1)*60),25,%5,,,,F:RR=RR+1
880 NEXT B
890 NEXT A
900 LOCATE 8,19:PRINT WW
910 LOCATE 8,21:PRINT RR
920 IF WW+RR=64 THEN GOSUB *勝敗
930 IF T=1 THEN 310
940 IF T=3 THEN 950 ELSE 990
950 WAIT 50:WHILE MOUSE(2,0)<>-1 AND MOUSE (2,1)<>-1:WEND
960 IF MOUSE (2,0)=-1 THEN 980 ELSE 970
970 IF MOUSE (2,1)=-1 THEN 2140 ELSE 950
980 ERASE BD:GOTO 10
990 WAIT 20
1000 '
1010 '-------------------マウスボタンの押下を待つ-------------------------
1020 '
1030 IF TA=2 THEN TC=1 ELSE TC=0
1040 IF TC=1 THEN GOSUB *石を置く
1050 WAIT 10
1060 SYMBOL(0,150),"思考中お待ち下さい",1,1,0
1070 SYMBOL(0,170),"あなたの番です",1,1,7
1080 WHILE MOUSE(2,0)<>-1 AND MOUSE(2,1)<>-1:WEND
1090 IF MOUSE(2,0)=-1 THEN 1100 ELSE 1220
1100 '
1110 '--------------------石を置いた場所を調べる--------------------------
1120 '
1130 MX=MOUSE(0):MY=MOUSE(1)
1140 IA=(MX-190)/60+1:IB=(MY-30)/60+1
1150 IF BD(IA,IB)=0 THEN 1230 ELSE 1160
1160 IF TC=1 THEN 1170 ELSE 1200
1170 SYMBOL(0,170),"あなたの番です",1,1,0
1180 SYMBOL(0,150),"思考中お待ち下さい",1,1,7
1190 GOTO 1040
1200 SYMBOL(0,150),"そこには置けません",1,1,7:WAIT 50
1210 SYMBOL(0,150),"そこには置けません",1,1,0:GOTO 1040
1220 END
1230 '
1240 '-----------上・下・左・右・左上・右上・左下・右下 の状態を調べる-----------
1250 '
1260 TT=0:UU=0:IF TA=2 THEN TB=1 ELSE TB=2
1270 '上
1280 JA=0:JB=-1
1290 GOSUB *状態チェック
1300 '下
1310 JA=0:JB=1
1320 GOSUB *状態チェック
1330 '左
1340 JA=-1:JB=0
1350 GOSUB *状態チェック
1360 '右
1370 JA=1:JB=0
1380 GOSUB *状態チェック
1390 '左上
1400 JA=-1:JB=-1
1410 GOSUB *状態チェック
1420 '左下
1430 JA=-1:JB=1
1440 GOSUB *状態チェック
1450 '右上
1460 JA=1:JB=-1
1470 GOSUB *状態チェック
1480 '右下
1490 JA=1:JB=1
1500 GOSUB *状態チェック
1510 IF UU=0 THEN 1160 ELSE 1520
1520 TA=TB:GOTO 800
1530 '
1540 '=========================サブルーチン===============================
1550 '
1560 '
1570 *状態チェック
1580 '
1590 TT=TT+1
1600 IF BD(IA+JA,IB+JB)=0 THEN 1690
1610 IF BD(IA+JA,IB+JB)=TA THEN 1620 ELSE 1690
1620 UU=UU+1
1630 BD(IA,IB)=TB
1640 CA=IA+JA:CB=IB+JB
1650 WHILE BD(CA,CB)<>TB AND BD(CA,CB)>0
1660 BD(CA,CB)=TB
1670 CA=CA+JA:CB=CB+JB
1680 WEND
1690 UU=UU+1:BD(IA,IB)=TB
1700 RETURN
1710 '
1720 *石を置く
1730 '
1740 RANDOMIZE TIME
1750 IA=INT(RND*8)+1:IB=INT(RND*8+1)
1760 RETURN 1150
1770 *一回戦
1780 MOUSE 1,,,0
1790 LOCATE ,7:PRINT "二回戦行い、 合計数":PRINT "が多い方が勝ちとな":PRINT "ります。":PRINT " PLAYER=青":PRINT " COM =赤":PRINT "先攻はCOMで行います。":PRINT "マウスの左ボタンを":PRINT "クリックして下さい。"
1800 WHILE MOUSE (2,0)<>-1:WEND
1810 CLS 4:MOUSE 1,,,1:WAIT 50
1820 RETURN
1830 '
1840 *二回戦
1850 '
1860 T=2
1870 MOUSE 1,,,0
1880 LOCATE ,7:PRINT "一回戦の結果は":PRINT "青"+STR$(RR)+"個、赤"+STR$(WW)+"個":PRINT "でした。":PRINT "二回戦はあなたが先":PRINT "攻です。":LOCATE ,12:PRINT "マウスの左ボタンを":PRINT "クリックして下さい。"
1890 WHILE MOUSE (2,0)<>-1:WEND
1900 CLS 4:MOUSE 1,,,1:WAIT 50
1910 RETURN
1920 *勝敗
1930 IF T=0 THEN 1940 ELSE 1970
1940 T=1:S=0
1950 SA=RR:SB=WW:ERASE BD
1960 GOTO 2130
1970 SC=SA+RR:SD=SB+WW
1980 MOUSE 1,,,0
1990 IF SC>SD THEN 2000 ELSE 2010
2000 SE$="PLAYER":GOTO 2020
2010 IF SC=SD THEN S=1 ELSE SE$="COM"
2020 LINE(160,200)-(480,280),PSET,7,BF
2030 LINE(160,200)-(480,280),PSET,0,B
2040 LINE(162,202)-(478,278),PSET,0,B
2050 LINE(163,203)-(477,277),PSET,0,B
2060 SYMBOL(180,210),"PLAYER"+STR$(SC)+"個",1,1,0:WAIT 50
2070 SYMBOL(180,230),"COM "+STR$(SD)+"個",1,1,0:WAIT 50
2080 IF S=0 THEN 2090 ELSE 2100
2090 SYMBOL(280,240),"で"+SE$+"の勝ちです。",1,1,0:GOTO 2110
2100 SYMBOL(280,240),"で同点です。",1,1,0
2110 T=3
2120 SYMBOL(240,260),"左クリック=タイトルヘ 右クリック=終了",1,1,0
2130 RETURN
2140 END